/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servicoimpl;

import br.com.deployment.entidade.acesso.Usuario;
import br.com.deployment.entidade.tramite.Secao;
import br.com.deployment.interfaces.UsuarioDaoIn;
import br.com.deployment.servico.UsuarioServico;
import br.com.deployment.utilitario.Caracteres;
import br.com.deployment.utilitario.Msg;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.faces.context.FacesContext;

/**
 *
 * @author roniere
 */
@Stateless
@LocalBean
public class UsuarioServicoImpl implements UsuarioServico {

    @EJB
    UsuarioDaoIn usuarioDao;

    @Override
    public void create(Usuario usuario) {
        try {
            if(usuarioDao.verificarUsuarioNome(usuario.getLogin()) == null){
                
                usuario.setSenha(usuario.getSenha());
                usuario.setSenha(Usuario.encryptPassword(usuario.getSenha()));
                usuario.setCpf(Caracteres.removecaracter(usuario.getCpf()));
                usuario.setContato(Caracteres.removecaracter(usuario.getContato()));
                usuario.setStatus(true);
                usuario.setDatacadastro(new Date());
            
                usuarioDao.save(usuario);
                Msg.messagemInfo("Usuario salvo com sucesso ");
                
            }else{
                Msg.messagemError("Login já existe !");
            }
            
        } catch (Exception erro) {
            Msg.messagemError("Login já existe !");
            erro.getStackTrace();
        }
    }

    @Override
    public Boolean exist(Usuario usuario) {
        return usuarioDao.exist(usuario);
    }

    @Override
    public void edit(Usuario usuario) {
        try {
            usuario.setCpf(Caracteres.removecaracter(usuario.getCpf()));
            usuario.setContato(Caracteres.removecaracter(usuario.getContato()));
            usuarioDao.update(usuario);
        } catch (Exception erro) {
            Msg.messagemError("Falha ao completar essa transação !");
        }
    }

    @Override
    public void remove(Usuario objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Usuario find(Integer id) {
        return usuarioDao.find(id);
    }

    @Override
    public List<Usuario> findAll() {
        return usuarioDao.findAll();
    }

    @Override
    public List<Usuario> findUsuario(Usuario usuario) {
        return usuarioDao.findUsuario(usuario);
    }

    @Override
    public List<Usuario> verificaUsuario(Usuario usuario) {
        return usuarioDao.verificaUsuario(usuario);
    }

    @Override
    public Usuario verificarUsuarioNome(String nome) {
        return usuarioDao.verificarUsuarioNome(nome);
    }
    
     @Override
    public Usuario getUsuario() {
        return usuarioDao.verificarUsuarioNome(FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal().getName());
    }
     
    @Override
    public List<Usuario> findUsuarioBySecao(Secao secao){
        return usuarioDao.findUsuarioBySecao(secao);
    }
    
    public List<Secao> findSecaoUsuario(){
        return usuarioDao.findSecaoUsuario(getUsuario());
    }
}
